home *** CD-ROM | disk | FTP | other *** search
- /*
- * This file is part of the KDE libraries
- * Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License version 2 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- **/
-
- #ifndef KMJOBMANAGER_H
- #define KMJOBMANAGER_H
-
- #if !defined( _KDEPRINT_COMPILE ) && defined( __GNUC__ )
- #warning internal header, do not use except if you are a KDEPrint developer
- #endif
-
- #include <qobject.h>
- #include <qptrlist.h>
- #include <qdict.h>
- #include <qvaluelist.h>
-
- #include <kdelibs_export.h>
-
- class KMJob;
- class KMThreadJob;
- class KActionCollection;
- class KAction;
-
- /**
- * @internal
- * This class is internal to KDEPrint and is not intended to be
- * used outside it. Please do not make use of this header, except
- * if you're a KDEPrint developer. The API might change in the
- * future and binary compatibility might be broken.
- */
- class KDEPRINT_EXPORT KMJobManager : public QObject
- {
- Q_OBJECT
-
- public:
- enum JobType { ActiveJobs = 0, CompletedJobs = 1 };
- struct JobFilter
- {
- JobFilter() { m_type[0] = m_type[1] = 0; m_isspecial = false; }
- int m_type[2];
- bool m_isspecial;
- };
-
- KMJobManager(QObject *parent = 0, const char *name = 0);
- virtual ~KMJobManager();
-
- static KMJobManager* self();
-
- void addPrinter(const QString& pr, JobType type = ActiveJobs, bool isSpecial = false);
- void removePrinter(const QString& pr, JobType type = ActiveJobs);
- void clearFilter();
- QDict<JobFilter>* filter();
- int limit();
- void setLimit(int val);
-
- //KMJob* findJob(int ID);
- KMJob* findJob(const QString& uri);
- //bool sendCommand(int ID, int action, const QString& arg = QString::null);
- bool sendCommand(const QString& uri, int action, const QString& arg = QString::null);
- bool sendCommand(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
- const QPtrList<KMJob>& jobList(bool reload = true);
- void addJob(KMJob*);
- KMThreadJob* threadJob();
-
- virtual int actions();
- virtual QValueList<KAction*> createPluginActions(KActionCollection*);
- virtual void validatePluginActions(KActionCollection*, const QPtrList<KMJob>&);
- virtual bool doPluginAction(int, const QPtrList<KMJob>&);
-
- protected:
- void discardAllJobs();
- void removeDiscardedJobs();
-
- protected:
- virtual bool listJobs(const QString& prname, JobType type, int limit = 0);
- virtual bool sendCommandSystemJob(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
- bool sendCommandThreadJob(const QPtrList<KMJob>& jobs, int action, const QString& arg = QString::null);
-
- protected:
- QPtrList<KMJob> m_jobs;
- QDict<JobFilter> m_filter;
- KMThreadJob *m_threadjob;
- };
-
- inline QDict<KMJobManager::JobFilter>* KMJobManager::filter()
- { return &m_filter; }
-
- inline void KMJobManager::clearFilter()
- { m_filter.clear(); }
-
- inline KMThreadJob* KMJobManager::threadJob()
- { return m_threadjob; }
-
- #endif
-